//===================================================================
	//设置LCD有效像素，参考panel规格书
	#define LCD_HSIZE		(320)	//横向(Y)显示有效像素
	#define LCD_VSIZE		(240)	//纵向(X)显示有效像素
//===================================================================	
		//定义LCD控制器中的参数
	#define LCD_HSPW		(32) 		//hs pulse 
	#define LCD_HBPD		(68)		//hs blanking or back po,99,rch
	#define LCD_HFPD		(20)		//hs front porch
	#define LCD_VSPW		(4)		//vs pulse width
	#define LCD_VBPD		(18)		//vs blanking or back porch
	#define LCD_VFPD		(4)		//vs front porch

//========//延时微调定义,下面参数最有效========================
	#define LCD_DCLK_UD	     (0)  //DCLK极性控制(下降沿/上升沿)
	#define LCD_6.5MHz_DIV   (1)  //   DCLK频率
	#define LCD_DCLK_delay   (1)  //取值范围(0~24),只有24位颜色深度才有效，秗rz罶DRAM中图片数据微调，主要是颜色位对齐调整
	#define LCD_FDB_delay    (1) //取值范围(0~3)，显示数据建立延时，在调屏画框时进行微调
	#define LCD_HVDE_delay   (1) //取值范围(0~3)，DE信号延时，在调屏画框时进行微调

		//DE信号微调定义，打包为一个字节LCD_DE_offset送给FPGA
	#define LCD_DE_offset_XF (1) //取值范围(0~3)，DE信号在V方向前端偏移，在调屏画框时进行微调
	#define LCD_DE_offset_XB (1) //取值范围(0~3)，DE信号在V方向后端偏移，在调屏画框时进行微调
	#define LCD_DE_offset_YF (1) //取值范围(0~3)，DE信号在H方向前端偏移，在调屏画框时进行微调
	#define LCD_DE_offset_YB (1) //取值范围(0~3)，DE信号在H方向后端偏移，在调屏画框时进行微调
                            
		//画外框信号微调定义，打包为一个字节LCD_WK_offset送给FPGA
	#define LCD_WK_offset_XF (0) //取值范围(0~3)，画外框时在V方向前端偏移，在调屏画框时进行微调
	#define LCD_WK_offset_XB (0) //取值范围(0~3)，画外框时在V方向后端偏移，在调屏画框时进行微调
	#define LCD_WK_offset_YF (1) //取值范围(0~3)，画外框时在H方向前端偏移，在调屏画框时进行微调
	#define LCD_WK_offset_YB (1) //取值范围(0~3)，画外框时在H方向后端偏移，在调屏画框时进行微调
                              
		//读SDRAM图片数据对齐微调定义，打包为一个字节LCD_SDRAM_offset送给FPGA
	#define LCD_SDRAM_offset_XF (0) //取值范围(0~3)，显示图片时在V方向前端偏移，在显示图片时进行微调
	#define LCD_SDRAM_offset_XB (0) //取值范围(0~3)，显示图片时在V方向后端偏移，在显示图片时进行微调
	#define LCD_SDRAM_offset_YF (1) //取值范围(0~3)，显示图片时在H方向前端偏移，在显示图片时进行微调
	#define LCD_SDRAM_offset_YB (1) //取值范围(0~3)，显示图片时在H方向后端偏移，在显示图片时进行微调

//===================================================================
//设置LCD前面肩参数(参考panel规格书)，特别注意MIPI中的设置不一定与FPGA中的设置相同，关键可能不同的参数为HBPD/VBPD
	//必须先要对这个函数进行初始化"TFT_MIPI_IC_Init.c"，此是初始化TFT IC，需要屏厂提供初始化代码
	#define MIPI_PLL		(28)		//SSD2828的PLL倍频数,主板晶振10MHz,倍频后是PLL=10*46=460MHz 65 75
	#define MIPI_FQS		(0xC0)  //SSD2828的倍频范围,0x80=251MHZ~500MHZ,0xC0=501MHZ~1000MHZ
	#define MIPI_RGBR 	(0x00)  //0x01=BGR，0x00=RGB
	#define MIPI_LANE   (0x03)	//0x03=4lane, 0x02=3lane, 0x01=2lane, 0x00=1lane

	#define MIPI_VSPW		(LCD_VSPW-0)			//vs pulse width
	#define MIPI_VBPD		(LCD_VBPD-0)		//vs blanking or back porch
	#define MIPI_VFPD		(LCD_VFPD-0)		//vs front porch	
	#define MIPI_HSPW		(LCD_HSPW-0) 		//hs pulse width
	#define MIPI_HBPD		(LCD_HBPD-0)		//hs blanking or back porch
	#define MIPI_HFPD		(LCD_HFPD-0)		//hs front porch
	
//====会用到的指令集，通过这些指令组合可以实现其它功能====
//InitClk(); 开启外部时钟，必须在初始化最开始位置
//Lcd_Init(); 对FPGA LCD部分进行初始化，必要
//MIPI_Init(); 对2828 IC进行初始化
//Lcd_WriteCmd(0x2f); 开显示指令,必须放在MIPI初始化后执行

//CTP_Init(); 初始化CTP控制器,CTP必须要加入此初始化函数，RTP没有初始化直接读坐标值即可
//CTP_GTXX_GetXY(); 对GTXX IC取得坐标值
//CTP_FTXX_GetXY(); 对FTXX IC取得坐标值
//RTP_Touch_GetXY(); 对X2046 IC取得坐标值

//LCD_Draw_Line(x1,y1,x2,y2,c); 线条两个端点坐标值，c为线条的颜色
//LCD_Drawcircle(xc,yc,r,fill,c); xc,xy为圆心坐标，fill表示是否为填充圆(0非填充，1填充)，c为线条的颜色
//LCD_Draw_Rectangle(x1,y1,x2,y2,c); 矩形两个对角点坐标值，c为线条的颜色

//====组合产生下降沿，相当于手动按键的功能，实现MCU换屏功能
//SW_UP_H(); MCU与FPGA共用的按键IO口，上翻键，MCU对此IO置高
//SW_UP_L(); MCU与FPGA共用的按键IO口，上翻键，MCU对此IO置低
//SW_DN_H(); MCU与FPGA共用的按键IO口，下翻键，MCU对此IO置高
//SW_DN_L(); MCU与FPGA共用的按键IO口，下翻键，MCU对此IO置低

//====下面组合运用，特别注意要先取得当前图片是在高图层区还是低图区，再在对应的图层区进行操作
//Get_PIC_SW(); 判断图片是在SDRAM中的高半部分还是低半部分显示，返回0/1，1为低半部分，0为高半部分
//Lcd_WriteCmd(0x38);为触摸功能关指令，不带参数
//Lcd_WriteCmd(0x39);为触摸功能开指令，不带参数
//Lcd_WriteCmd(0x3A);为触摸功能写SDRAM低半部分地址指令，不带参数
//Lcd_WriteCmd(0x3B);为触摸功能写SDRAM高半部分地址指令，不带参数

//====下面为组合运用，特别注意0X13与0X14组合产生边沿信号
//Get_SD_BUSY(); 判断SD卡是否处于搬数据，返回0/1，0为忙，在忙时不可以重送图片地址
//Lcd_WriteCmd(0x11);为写图片在SD卡中的地址，带4个8位参数，高位在前，低位在后，如下：
//	Lcd_WriteData(SD_PICX_ADDR4);
//	Lcd_WriteData(SD_PICX_ADDR3);
//	Lcd_WriteData(SD_PICX_ADDR2);
//	Lcd_WriteData(SD_PICX_ADDR1);
//Lcd_WriteCmd(0x13);为换屏重新写图片在SD卡中的地址，产生低电平
//Lcd_WriteCmd(0x14);为换屏重新写图片在SD卡中的地址，产生高电平

// =================本系统中用到的指令===================//
//-------SD卡初始化封装指令
//11H为写图片在SD卡中的地址，带4个8位参数，高位在前，低位在后
//12H为图片在SD卡中的写大小，带4个8位参数，高位在前，低位在后
//13H为换屏重新写图片在SD卡中的地址，产生低电平，FPGA需要识别到13H/14H有一个沿的变化才有效
//14H为换屏重新写图片在SD卡中的地址，产生高电平
//1FH为SD卡设置完成标志指令

//-------LCD初始化封装指令
//21H为前后肩设定，带6个参数，每个参数8位宽，参数顺序：HSPW;HBPD;HFPD;VSPW;VBPD;VFPD;
//22H为DE信号偏移设定，带1个8位宽的参数，[7:6]X前、[5:4]X后、[3:2]Y前、[:0]Y后
//23H为外框信号偏移设定，带1个8位宽的参数，[7:6]X前、[5:4]X后、[3:2]Y前、[1:0]Y后
//24H为读SDRAM信号偏移设定，带1个8位宽的参数，[7:6]X前、[5:4]X后、[3:2]Y前、[1:0]Y后
//25H为DE/DB信号延时对齐设定，带1个6位宽的参数，[5:4]HVS、[3:2]DE、[1:0]DB
//26H为设定HS SIZE大小指令，带2个参数
//27H为设定VS SIZE大小指令，带2个参数
//28H为设定150MHz分频出PCLK指令，带1个参数（有效值0~31）
//29H分频后DCLK的脉冲宽度,必须小于LCD_DCLK_DIV
//2AH分DCLK移位对位(有效值0~24)
//2BH显示画面选择指令(有效值0~10)
//2EH为DCLK极性控制指令，带1个参数且只有最低位有效，0为下降沿，1为上升沿
//2FH为开显示指令，不带参数，必须在2X指令（或MIPI配置）完成后写此指令打开显示

//-------XY坐标封装指令
//31H为定X坐标，带两个参数，高位在前，低位在后
//32H为定Y坐标，带两个参数，高位在前，低位在后
//38H为触摸功能关指令，不带参数
//39H为触摸功能开指令，不带参数
//3AH为触摸功能写SDRAM低半部分地址指令，不带参数
//3BH为触摸功能写SDRAM高半部分地址指令，不带参数
//3EH为开始写指令，不带参数
//3FH为结束写指令，不带参数

//2BH显示画面选择指令(有效值0~10)，具体画面可选
//#define FRAM  		(0)//0:黑背影下显示红边框=检：测试是否有错位,亮点，驱动不良，线缺陷、偏光片不良
//#define DISP_RED  (1)//1:红屏显示=检：亮/暗点，驱动不良，线缺陷
//#define DISP_GREEN	(2)//2:绿屏显示=检：亮/暗点，驱动不良，线缺陷
//#define DISP_BLUE 	(3)//3:蓝屏显示=检：亮/暗点，驱动不良，线缺陷；同时带图片切换标志位
//#define COLOR_8		(4)//4:横着显示8种颜色=检：色差，不均
//#define GRAY_50		(5)//5:50%灰阶整屏显示=检：亮/暗点，驱动不良，线缺陷，色差，不均
//#define GRAY_32S	(6)//6:32级灰阶垂直方向展开=检：灰阶电压是否连续，驱动是否异常，干扰	
//#define CROSSTALK	(7)//7:25%灰阶下显示黑块=检：串扰（crosstalk）
//#define ALLON			(8)//8:白屏显示=检：背光缺陷，暗点，驱动不良，线缺陷
//#define FLICKER		(9)//9:0%灰阶与50%灰阶隔行显示=检：FLICKER
//#define PIC_WTP		(10)//10:图片显示=检：图片测试；同时带有TP测试标志位
//#define PIC_NTP		(11)//11:图片显示=检：图片测试
			
//==================在本文最后还有一条合并语句：切勿删除================


//====================打包参数，不可修改下面的数据结构=================//
	#define LCD_DE_offset ( (LCD_DE_offset_XF<<6) | (LCD_DE_offset_XB<<4) | (LCD_DE_offset_YF<<2) | LCD_DE_offset_YB )
	#define LCD_WK_offset ( (LCD_WK_offset_XF<<6) | (LCD_WK_offset_XB<<4) | (LCD_WK_offset_YF<<2) | LCD_WK_offset_YB )
	#define LCD_SDRAM_offset ( (LCD_SDRAM_offset_XF<<6) | (LCD_SDRAM_offset_XB<<4) | (LCD_SDRAM_offset_YF<<2) | LCD_SDRAM_offset_YB )
	#define LCD_HVDEDB_Delay ( (LCD_HVDE_delay<<2) | LCD_FDB_delay )



